package anlage;

import java.awt.Color;
import java.awt.Graphics;

import steuerung.Ablaufsteuerung;

/**
 * 
 * @author Nilientes
 * 
 */
public class Richtungsgleis extends AnlageObjekt implements Comparable {

	protected int richtungsgleisnummer;
	private int fuellung;

	/**
	 * 
	 * @param steuerung
	 * @param id
	 * @param varsoll
	 * @param varist
	 * @param belegt
	 */
	public Richtungsgleis(Ablaufsteuerung steuerung, int id, String varsoll, String varist, String belegt) {
		super(steuerung, id, varsoll, varist, belegt);
	}

	/**
	 * 
	 * @param rgn
	 */
	public void setRichtungsgleisnummer(int rgn)
	{
		this.richtungsgleisnummer = rgn;
	}

	/**
	 * 
	 * @return returns the number (ID) of direction track
	 */
	public int getRichtungsgleisnummer()
	{
		return this.richtungsgleisnummer;
	}

	@Override
	public void paint(Graphics g, int x, int y)
	{
		if (istBelegt) g.setColor(Color.RED);
		else g.setColor(Color.BLACK);
		g.drawLine(x, y, 300, y);

		for (int i = 0; i < fuellung; i++) {
			g.setColor(Color.BLUE);
			g.fillOval(300 - (i * 8) - 5, y - 5, 5, 5);
		}
	}

	public void call(String var, int value)
	{
		super.call(var, value);

		if (belegt.toUpperCase().equals(var) && value == 2) {
			if (this.steuerung.getStatus() == Ablaufsteuerung.AEIN) {
				fuellung++;
			}
		}
	}

	/**
	 * 
	 */
	public void setWeicheZuGleis()
	{
		if (vorgaenger != null) {
			vorgaenger.setWeicheZuNachfolger(this);
		}
	}

	public int compareTo(Object arg0)
	{
		Richtungsgleis r = (Richtungsgleis) arg0;

		if (r.richtungsgleisnummer < richtungsgleisnummer) return 1;
		else return -1;
	}

	@Override
	public int getGestelltesRichtungsgleis()
	{
		return richtungsgleisnummer;
	}
	
	

}
